package ScalaStudy.chapter07

import scala.collection.mutable.ArrayBuffer

object Test02_ArrayBuffer {

  def main(args: Array[String]): Unit = {


    /////////////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////// 可变数组 ///////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////


    println("====================== 创建可变数组 ====================")

    val arr:ArrayBuffer[Int] = new ArrayBuffer[Int]()
    val arr0 = ArrayBuffer(1, 2, 3, 4, 5)

    println(arr.mkString("-"))
    println(arr0.mkString("-"))
    println(arr0)

    println("====================== 访问元素 ====================")

    println(arr0(0))          //不能越界，0中必须有元素

    println("====================== 添加元素 ====================")

    val arr1 = arr :+ 1      //追加后面
    println(arr1)

    arr += 1                  //追加到数组后面，arr = (1)
    println(arr)

    0 +=: arr                 //向前追加 0， arr = (0, 1)
    println(arr)


    //其他的方法

    arr.append(2)             //在末尾添加元素 arr = (0, 1, 2)
    arr.prepend(9)            //在前面添加 9， arr = (9, 0, 1, 2)
    arr.insert(1,8,7)         //在1的位置添加8，7，arr = (9, 8, 7, 0, 1, 2)
    println(arr)

    //追加一个数组

    arr.insertAll(0, arr0)    //在0位置添加 arr0, arr = (1, 2, 3, 4, 5, 9, 8, 7, 0, 1, 2)
    println(arr)              //函数arr.prependAll 表示在前面追加数组

    println("====================== 删除元素 ====================")

    arr.remove(4)             //删除位置4中的元素     arr = (1, 2, 3, 4, 9, 8, 7, 0, 1, 2)
    println(arr)

    arr.remove(0,4)           //删除位置0~3中的元素  arr = (9, 8, 7, 0, 1, 2)
    println(arr)

    //删除特定的值

    arr -= 9                 //删除数组中的9         arr = (8, 7, 0, 1, 2)
    println(arr)


    /////////////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////   可变数组与不可变数组的转换   ////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////


    println("=============  可变数组转换成不可变数组  ==============")

    val arr_change: ArrayBuffer[Int] = ArrayBuffer(1,2,3,4,5)          //定义一个可变数组
    val arr_noChange: Array[Int] = arr_change.toArray                  //将可变数组转化为不可变数组
    println(arr_noChange.mkString("-"))                                //转换之后的不可变数组
    println(arr_change)                                                //转换之前的可变数组

    println("=============  不可变数组转换成可变数组  ==============")

    val arr_change1  =  arr_noChange.toBuffer
    println(arr_change1)                                               //将不可变转换成可变的数组

  }
}
